package com.lianniu.web.buyerOrder.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.lianniu.web.buyerOrder.model.BuyerOrderConditionVo;
import com.lianniu.web.buyerOrder.model.CancelOrder;
import com.lianniu.web.buyerOrder.model.OrderDetailVo;
import com.lianniu.web.buyerOrder.model.OrderInfoVo;
import com.lianniu.web.buyerOrder.model.ShipmentVo;

public interface IBuyerOrderDao {

    /**
     * @param orderId
     * @return
     * @Title: getOrderDetailList
     * @Description: 根据orderid获取明细list
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:12:10
     * @return: List<OrderDetailVo>
     */
    public List<OrderDetailVo> getOrderDetailList(@Param("orderId") String orderId);

    /**
     * @param orderId
     * @return
     * @Title: getOrderById
     * @Description:根据订单ID获取orderinfo
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:11:52
     * @return: OrderInfoVo
     */
    public OrderInfoVo getOrderById(@Param("orderId") String orderId);

    /**
     * @param condition
     * @return
     * @Title: getOrders
     * @Description: 获取买家订单列表
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:11:31
     * @return: List<OrderInfoVo>
     */
    public List<OrderInfoVo> getOrders(BuyerOrderConditionVo condition);

    /**
     * @return
     * @Title: getNotPayOrders
     * @Description: 超时未支付订单列表
     * @author: Administrator
     * @date: 2016年9月12日 下午1:38:00
     * @return: List<OrderInfoVo>
     */
    List<OrderInfoVo> getOutTimeOrders();

    /**
     * @param cancel
     * @return
     * @Title: cancelOrder
     * @Description: 取消订单
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:13:13
     * @return: boolean
     */
    public boolean cancelOrder(CancelOrder cancel);

    public boolean cancelOrderDetail(CancelOrder cancel);

    /**
     * @param ship
     * @return
     * @Title: shipment
     * @Description: 卖家发货
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:10:16
     * @return: boolean
     */
    public boolean shipment(ShipmentVo ship);

    /**
     * @param map
     * @return
     * @Title: getOrderCode
     * @Description: 获取订单编号
     * @author: Administrator
     * @date: 2016年9月6日 上午9:39:14
     * @return: String
     */
    String getOrderCode(Map<String, Object> map);

    /**
     * @param orderInfo
     * @return
     * @Title: addOrderInfo
     * @Description: 新订单
     * @author: Administrator
     * @date: 2016年9月6日 下午3:27:27
     * @return: int
     */
    int addOrderInfo(OrderInfoVo orderInfo);

    /**
     * @param list
     * @return
     * @Title: addOrderDetail
     * @Description: 插入订单明细
     * @author: Administrator
     * @date: 2016年9月6日 下午3:28:09
     * @return: int
     */
    int addOrderDetail(List<OrderDetailVo> list);

    /**
     * @param orderInfoVo
     * @return
     * @Title: sureOrder
     * @Description: 确认收货
     * @author: guoconglin
     * @date: 2016年9月2日 上午11:13:13
     * @return: boolean
     */
    public boolean confirmOrder(CancelOrder confirm);

    public boolean confirmOrderDetail(CancelOrder confirm);

    /**
     * @param pay
     * @return
     * @Title: payMoney
     * @Description: 付款
     * @author: guoconglin
     * @date: 2016年9月8日 上午10:32:32
     * @return: boolean
     */
    public boolean payMoney(CancelOrder pay);

    public boolean payMoneyDetail(CancelOrder pay);

    /**
     * @param cancel
     * @return
     * @Title: sureOrder
     * @Description: 确认收货并改变评价状态
     * @author: guoconglin
     * @date: 2016年9月8日 下午3:28:42
     * @return: boolean
     */
    public boolean sureOrder(CancelOrder sure);

    public boolean sureOrderDetail(String orderid);

    /**
     * @param list
     * @return
     * @Title: delOutTimeOrder
     * @Description: 批量删除支付超时订单
     * @author: Administrator
     * @date: 2016年9月12日 下午2:30:39
     * @return: int
     */
    int delOutTimeOrder(List<OrderInfoVo> list);

    /**
     * @param id
     * @return
     * @Title: delOutTimeOrder
     * @Description: 根据ID删除支付超时订单
     * @author: Administrator
     * @date: 2016年9月12日 下午2:30:53
     * @return: int
     */
    int delOutTimeOrder(String id);

    /**
     * @param list
     * @return
     * @Title: delOutTimeOrderDetail
     * @Description: 批量删除支付超时订单详细
     * @author: Administrator
     * @date: 2016年9月12日 下午2:30:39
     * @return: int
     */
    int delOutTimeOrderDetail(List<OrderDetailVo> list);

    /**
     * @param id
     * @return
     * @Title: delOutTimeOrderDetail
     * @Description: 根据ID删除支付超时订单详细
     * @author: Administrator
     * @date: 2016年9月12日 下午2:30:53
     * @return: int
     */
    int delOutTimeOrderDetail(String id);

    boolean changeBuyerName(@Param("userId")String userId,@Param("buyerName")String buyerName);

}

